Ext.define('Ssimgres.controller.Capacitacion', {
	extend : 'Ext.app.Controller',
	views : ['capacitacion.CapacitacionesView', 'capacitacion.CapacitacionView', 'capacitacion.CortarAvatarCapacitacionView'],
	stores : ['Capacitaciones', 'Facilitadores', 'TipoCapacitaciones'],
	models : ['Capacitacion'],
	refs : [{
		ref : 'capacitacionesView',
		selector : 'capacitacionesView'
	}, {
		ref : 'capacitacionView',
		selector : 'capacitacionView'
	}, {
		ref : 'cortarAvatarCapacitacionView',
		selector : 'cortarAvatarCapacitacionView'
	}],
	init : function() {
		this.control({
			'capacitacionesView' : {
				itemclick : this.activarBotones
			},
			'capacitacionesView button[action=btnNuevo]' : {
				click : this.capacitacionViewShow
			},
			'capacitacionesView button[action=btnEliminar]' : {
				click : this.eliminarTipo
			},
			'capacitacionesView button[action=btnEditar]' : {
				click : this.capacitacionViewShowEditar
			},
			'capacitacionView button[action=btnCancelar]' : {
				click : this.capacitacionViewCancelar
			},
			'cortarAvatarCapacitacionView button[action=btnCancelar]' : {
				click : this.cortarAvatarCapacitacionViewCancelar
			},
			'cortarAvatarCapacitacionView button[action=btnAceptar]' : {
				click : this.cortarAvatarCapacitacionViewAceptar
			},
			'capacitacionView button[action=btnGuardar]' : {
				click : this.capacitacionViewGuardar
			},
			'capacitacionView filefield[action=btnExaminar]' : {
				change : this.avatarUpload
			}
		});
	},
	reset : function() {
		Ext.getCmp('capacitacionesView_btnEditar').setDisabled(true);
		Ext.getCmp('capacitacionesView_btnEliminar').setDisabled(true);
		this.getCapacitacionesStore().load();
		this.getCapacitacionesView().getSelectionModel().clearSelections();
	},
	capacitacionViewShow : function() {
		var Capacitacion = this.getCapacitacionModel();
		var capacitacion = new Capacitacion();

		this.getFacilitadoresStore().load();
		this.getTipoCapacitacionesStore().load();

		Ext.widget('capacitacionView').show();

		var form = this.getCapacitacionView().down('form').getForm();
		var avatar = Ext.getCmp('capacitacionView_avatarCapacitacion');

		form.loadRecord(capacitacion);
		avatar.setSrc('/servicio_capacitacion/avatar/');
	},
	capacitacionViewShowEditar : function() {
		this.getFacilitadoresStore().load();
		this.getTipoCapacitacionesStore().load();

		Ext.widget('capacitacionView').show();

		var form = this.getCapacitacionView().down('form').getForm();
		var record = this.getCapacitacionesView().getSelectionModel().getSelection()[0];
		var avatar = Ext.getCmp('capacitacionView_avatarCapacitacion');

		form.loadRecord(record);
		avatar.setSrc('/servicio_capacitacion/avatar/' + record.getId() + "?" + new Date().getTime());
	},
	activarBotones : function() {
		Ext.getCmp('capacitacionesView_btnEditar').setDisabled(false);
		Ext.getCmp('capacitacionesView_btnEliminar').setDisabled(false);
	},
	capacitacionViewCancelar : function() {
		this.getCapacitacionView().close();
	},
	cortarAvatarCapacitacionViewCancelar : function() {
		this.getCortarAvatarCapacitacionView().close();
	},
	cortarAvatarCapacitacionViewAceptar : function() {
		Ext.Ajax.request({
			url : '/servicio_img_temp/crop_resize/' + this.getCortarAvatarCapacitacionView().img_temp_id,
			method : 'post',
			params : {
				x : this.getCortarAvatarCapacitacionView().cropData.x,
				y : this.getCortarAvatarCapacitacionView().cropData.y,
				width : this.getCortarAvatarCapacitacionView().cropData.width,
				height : this.getCortarAvatarCapacitacionView().cropData.height,
				size_width : 250,
				size_height : 170
			},
			success : function(response) {
				var respuesta = Ext.JSON.decode(response.responseText);
				if (respuesta.success) {
					this.getCortarAvatarCapacitacionView().close();

					var avatar = Ext.getCmp('capacitacionView_avatarCapacitacion');
					avatar.setSrc('/servicio_img_temp/img/' + respuesta.img_temp_id);

					var form = this.getCapacitacionView().down('form').getForm();
					var record = form.getRecord();

					record.set('img_temp_id', respuesta.img_temp_id);
				} else {
					Ext.Msg.show({
						title : 'Error',
						msg : respuesta.msg,
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.ERROR
					});
				}
			},
			scope : this
		});
	},
	avatarUpload : function(button, value) {
		var form = button.up('form').getForm();
		var ext = value.substring(value.lastIndexOf('.') + 1).toLowerCase();
		if (value != '' && ext != 'png' && ext != 'jpg' && ext != 'gif') {
			Ext.Msg.show({
				title : 'Atención',
				msg : 'Formato de archivo no soportado',
				buttons : Ext.Msg.OK,
				icon : Ext.Msg.WARNING
			});
		} else {
			form.submit({
				scope : this,
				url : '/servicio_img_temp/guardar',
				waitMsg : 'Cargando imagen...',
				success : function(form, action) {
					Ext.widget('cortarAvatarCapacitacionView', {
						imageUrl : '/servicio_img_temp/img/' + action.result.img_temp_id,
						img_temp_id : action.result.img_temp_id
					}).show();
				},
				failure : function(form, action) {
					Ext.Msg.show({
						title : 'Error',
						msg : action.result.msg,
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.ERROR
					});
				}
			});
		}
	},
	capacitacionViewGuardar : function() {
		var form = this.getCapacitacionView().down('form').getForm();

		if (form.isValid()) {
			form.updateRecord();
			form.getRecord().save({
				success : function(operation) {
					Ext.Msg.show({
						title : 'Éxito',
						msg : operation.proxy.reader.jsonData["msg"],
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.INFO
					});
					this.getCapacitacionView().close();
					this.reset();
				},
				failure : function(operation) {
					Ext.Msg.show({
						title : 'Error',
						msg : operation.proxy.reader.jsonData["msg"],
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.ERROR
					});
				},
				scope : this
			});
		} else {
			Ext.Msg.show({
				title : 'Atención',
				msg : 'Verifica los campos del formulario',
				buttons : Ext.Msg.OK,
				icon : Ext.Msg.WARNING
			});
		}

	},
	eliminarTipo : function() {
		var record = this.getCapacitacionesView().getSelectionModel().getSelection()[0];

		Ext.Msg.confirm('Eliminar registro', '¿Está seguro de la operación?', function(id, value) {
			if (id === 'yes') {
				record.destroy({
					success : function(operation) {
						Ext.Msg.show({
							title : 'Éxito',
							msg : operation.proxy.reader.jsonData["msg"],
							buttons : Ext.Msg.OK,
							icon : Ext.Msg.INFO
						});
						this.reset();
					},
					failure : function(operation) {
						Ext.Msg.show({
							title : 'Error',
							msg : operation.proxy.reader.jsonData["msg"],
							buttons : Ext.Msg.OK,
							icon : Ext.Msg.ERROR
						});
					},
					scope : this
				});
			}
		}, this);

	}
});
